var geocoder;
var map;
var marker;

/**
 * initialisation de la map
 * @return void
 */
function initialize() {
	geocoder = new google.maps.Geocoder();
	if($('#UtilisateurLatitude').val()&&$('#UtilisateurLongitude').val()){
		/* Si on connait déjà les coordonnées de l'utilisateur,
		   on centre la map dessus
		 */
		var lat = $('#UtilisateurLatitude').val();
		var lng = $(UtilisateurLongitude).val();
	} else {
		/* sinon map centrée sur Paris */		
		var lat = 48.853;
		var lng = 2.349;
	}

	var latlng = new google.maps.LatLng(lat, lng);
	var mapOptions = {
		zoom: 12,
		center: latlng
	}
	/* On accroche la map à la balise div de la page */
	map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
	/* On crée un marker draggable pour pouvoir que l'utilisateur 
	   puisse corriger sa position si elle est mauvaise */
	marker = new google.maps.Marker({
		position: latlng,
		map: map,
		draggable:true,
		title:"Drag me!"
	});
	/* On écoute le drag du marker et on mettra les valeurs 
	   récupérées dans les champs input cachés de la page */
	google.maps.event.addListener(marker, 'dragend', updateLatLng);
	if($('#UtilisateurVille').val()){codeAddress();}
}
/**
 * codeAddress method
 * fonction qui récupère via l'api google map les coordonnées gps 
 *	à partir d'une adresse 
 * @return void
 */
function codeAddress() {
	var address = $('#UtilisateurAdresse1').val()+' ';
	address += $('#UtilisateurAdresse2').val()+' ';
	address += $('#UtilisateurVille').val()+' ';
	address += $('#UtilisateurCodePostal').val()+' ';
	address += $('#UtilisateurCountryId option:selected').text();
	geocoder.geocode( { 'address': address}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
			$('#UtilisateurLatitude').val(results[0].geometry.location.lat());
			$('#UtilisateurLongitude').val(results[0].geometry.location.lng());
			map.setCenter(results[0].geometry.location);
			marker.setPosition(results[0].geometry.location);
		} else {
			//alert('Geocode was not successful for the following reason: ' + status);
		}
	});
}
/**
 * updateLatLng method
 * mise à jour des champs cachés dans la page avec les valeurs récupérées
 * @return void
 */
function updateLatLng(){
	$('#UtilisateurLatitude').val(marker.getPosition().lat());
	$('#UtilisateurLongitude').val(marker.getPosition().lng());	
}

google.maps.event.addDomListener(window, 'load', initialize);
